﻿// @brief
// @file EnumeratedValueCollection.cs
// @date 2024年08月12日
// @author doublecat
// 
// Copyright (C) &lt;2024&gt;  &lt;doublecat&gt;
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

using System.Xml.Serialization;

namespace doublecat.mcu.svd;

public class EnumeratedValueCollection {
    /// <summary>
    /// 
    /// </summary>
    [XmlElement("headerEnumName")]
    public string? HeaderEnumName { get; set; }

    /// <summary>
    /// 
    /// </summary>
    [XmlElement("name")]
    public required string Name { get; set; }

    /// <summary>
    /// 
    /// </summary>
    [XmlElement("usage")]
    public string? Usage { get; set; }

    /// <summary>
    /// 
    /// </summary>
    [XmlElement("enumeratedValue")]
    public List<EnumeratedValue> EnumeratedValues { get; set; } = new List<EnumeratedValue>();

    /// <summary>
    /// 枚举值的个数
    /// </summary>
    public int Count => EnumeratedValues.Count;

    /// <summary>
    /// 枚举所属的位域
    /// </summary>
    public required Field Parent { get; set; }

    /// <summary>
    /// 返回枚举名称
    /// </summary>
    /// <returns></returns>
    /// <exception cref="NotImplementedException"></exception>
    public string GetName() {
        return Name;
    }
}
